import { defineStore } from 'pinia'

export const useMenuStore = defineStore('menu', {
    // 真正存储数据的地方
    state() {
        return {
            // 是否折叠
            isCollapse: false,
            // 选中的菜单
            selectedMenu: [],
            // 路由列表
            routerList: [],
        }
    },
    // 启用持久化存储
    persist: true,

    actions: {
        // 折叠菜单
        toggleCollapse() {
            this.isCollapse = !this.isCollapse
        },
        // 添加菜单
        addMenu(value) {
            // 对数据进行去重，使用path作为唯一标识
            if (this.selectedMenu.findIndex(item => item.path === value.path) === -1) {
                this.selectedMenu.push(value)
            }
        },
        // 删除选中的菜单
        closeMenu(value) {
            this.selectedMenu = this.selectedMenu.filter(item => item.path !== value.path)
        },
        // 动态设置菜单
        dynamicMenu(value) {
            // 通过glob导入所有路由文件
            const modules = import.meta.glob('@/views/**/**/*.vue')
            console.log(modules)
            // 设置路由列表
            function routerSet(router) {
                router.forEach((route) => {
                    if (!route.children) {
                        // 拼接路由文件路径
                        const url = `/src/views${route.meta.path}/index.vue`
                        // 将路由组件赋值给route.component
                        route.component = modules[url]
                    } else {
                        routerSet(route.children)
                    }
                })
            }
            routerSet(value)
            // 将路由列表赋值给routerList
            this.routerList = value
        },
    }
})
